Skip to content

docs: add Prerequisites block to memory guide - #1665

Merged
itomek merged 4 commits into
amd:mainfrom
somo9909:fix/prerequisites-memory-guide
Jun 26, 2026
Merged

docs: add Prerequisites block to memory guide#1665
itomek merged 4 commits into
amd:mainfrom
somo9909:fix/prerequisites-memory-guide

Conversation

@somo9909

@somo9909 somo9909 commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Contributes to #1077

First of the ~14 guides listed in #1077. Linked as "Contributes to" (not "Fixes") so merging this keeps the issue open to track the remaining guides.

What this PR does

Adds a Prerequisites block to docs/guides/memory.mdx
modelled after docs/guides/code.mdx (lines 55-90).

The block covers:

  • Install path (developer clone)
  • Extras required: [dev, rag]
  • Lemonade server must be running
  • Examples folder is inside the cloned repo

Notes

Starting with memory.mdx first for feedback before
updating the remaining 13 guides.

@github-actions github-actions Bot added the documentation Documentation changes label Jun 15, 2026
@somo9909

Copy link
Copy Markdown
Contributor Author

Hi @kovtcharov! This is my first guide update for #1077.
I've added the Prerequisites block to memory.mdx following
the code.mdx template. Please let me know if any changes
are needed before I update the remaining 13 guides.

@kovtcharov

Copy link
Copy Markdown
Contributor

@claude review this update to the guide. Should we include Gaia init and Agent UI for targeting different users when onboarding with memory, not just developers?

@github-actions

Copy link
Copy Markdown
Contributor

Yes — the Prerequisites should cover end users too, because the guide's own body recommends the Agent UI as the primary way to enable memory (gaia chat --ui, the Memory Dashboard), yet the new block only describes the developer clone path. A reader who followed the recommended UI flow won't recognize themselves in these prereqs.

Quickstart already splits these audiences (docs/quickstart.mdx: Agent UI desktop app for end users → gaia init → Manual/Clone for developers), so mirroring that here keeps things consistent. A <Tabs> block — the same component quickstart uses — is the cleanest fit:

  • Agent UI (end users): install the desktop app; it sets up the backend and bundles the RAG runtime automatically, so no manual extras. Enable memory from the Memory Dashboard / gaia chat --ui.
  • Developers: the current clone + uv pip install -e ".[dev,rag]" block.

One accuracy note in your favor, @somo9909: the [rag] extra is genuinely required for the developer path — memory loads faiss + sentence-transformers + numpy directly (src/gaia/agents/base/memory.py). The [ui]/Agent UI install pulls those same deps in for you (#845), which is why the UI path needs no extras line.

Minor nit: the diff dropped the trailing newline at end of file — worth restoring.

Great first contribution — splitting the prereqs by audience before rolling out to the other 13 guides will set a good template.

@kovtcharov

Copy link
Copy Markdown
Contributor

Hi @somo9909, can you comment when this PR will be ready for review?

@itomek itomek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @somo9909 — this is exactly the right shape for the Prerequisites block, and a great template to roll out to the rest. The /setup/quickstart#for-developers + #manual-install swap is correct (both anchors resolve), and following the code.mdx structure is just what the issue asked for.

I've switched the PR description from Fixes #1077 to Contributes to #1077 so merging this won't auto-close the issue — let's keep #1077 open to track the remaining 13 guides.

Two small cosmetic notes (neither blocks merge):

  1. The install command uses .[dev,rag] but the Extras required bullet lists only [rag] — left an inline suggestion to align them (and [rag] is the right requirement: memory's recall uses FAISS, which ships in [rag]).
  2. The edit dropped the file's trailing newline (\ No newline at end of file in the diff) — worth restoring for a clean EOF.

The template looks good to me — once those are in, you're clear to apply the same block across the other 13 guides. Nice first contribution! 🎉

Comment thread docs/guides/memory.mdx Outdated
@itomek
itomek marked this pull request as ready for review June 26, 2026 14:31
@itomek
itomek requested a review from kovtcharov-amd as a code owner June 26, 2026 14:31

@itomek itomek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied the two cosmetic fixes directly on the branch (the Extras required bullet now matches the .[dev,rag] install command, and the trailing newline is restored) and approving. Thanks again @somo9909 — the template's in great shape, and you're clear to roll the same block out across the remaining guides tracked in #1077. 🎉

@itomek itomek changed the title docs: add Prerequisites block to memory guide (fixes #1077) docs: add Prerequisites block to memory guide Jun 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Verdict: Approve with suggestions — safe to merge after a quick look at one bullet.

This adds a Prerequisites block to the memory guide (install path, [dev,rag] extras, Lemonade running) and repoints the intro link from /setup to the quickstart developer/manual-install anchors. The technical claims check out: memory recall really does use the FAISS index from the [rag] extra and a Lemonade-served embedding model, so listing both as prerequisites is correct, and both new anchor links resolve.

One thing to fix before merge: the new "Example files … under examples/" bullet doesn't match reality — this guide doesn't point readers at any files in that folder (the "examples" it mentions are inline chat snippets), and there's no memory example in examples/. Either drop the bullet or reword it so it doesn't promise files that aren't there.

🔍 Technical details

Verified accurate:

  • #for-developers and #manual-install both resolve to real headings in docs/quickstart.mdx (## For developers, ### Manual Install).
  • [rag] ships faiss-cpu (setup.py:232), and src/gaia/agents/base/memory.py:16,304 confirms memory uses a FAISS index — so "[rag] provides the FAISS index used for memory recall" is correct.
  • Lemonade-required claim holds: recall embeds via a Lemonade-served model (memory.py:15,150nomic-embed-text-v2-moe-GGUF).

🟢 Minor — "Example files" bullet is inaccurate (docs/guides/memory.mdx:36). The guide references no files under examples/; every "example" in it is an inline conversation snippet or a table cell ("code examples", "Example knowledge"), and there's no memory sample in the repo's examples/ dir. Suggest removing the bullet:

- **Lemonade server** must be running before you start:

  ```bash
  lemonade-server serve

(i.e. end the list at the Lemonade item; drop the trailing `examples/` bullet). If you'd rather keep a pointer, reword it to name an actual file — but none currently exists for memory.

**Strengths**
- Mirrors the established `docs/guides/code.mdx` prerequisites pattern (clone → uv venv → editable install → start Lemonade), keeping the guides consistent.
- Pins `--python 3.12` and shows the Windows activate path — small touches that prevent first-run friction.
- Scopes itself to one guide for feedback before fanning out to the rest of #1077; sensible incremental approach.
</details>

@itomek
itomek enabled auto-merge June 26, 2026 14:34
@itomek
itomek added this pull request to the merge queue Jun 26, 2026
Merged via the queue into amd:main with commit 0a4e2e1 Jun 26, 2026
14 checks passed
pull Bot pushed a commit to bhardwajRahul/gaia that referenced this pull request Aug 17, 2026
Release notes had grown into long blocks of prose with a marketing-toned
paragraph on top. They now generate as short bullets grouped by section,
with a word cap on the narrative part. Nothing informational is lost —
every PR link, contributor credit, and changelog entry is preserved; the
prose around them is cut.

Two generators write `docs/releases/<tag>.mdx` and they had drifted
apart. The `gaia-release` skill told the model GAIA's notes "read dry"
and to make them "engaging"; the `release-notes` job in `claude.yml`
asked for "comprehensive" notes with an `## Overview` paragraph and
emoji headings. Fixing one alone would have been overwritten by the
other on the next tag, so both now share one spec.

Closes amd#2961

## What it looks like now

Regenerated from the last two releases — same facts, same PR numbers,
new template. Narrative words (the capped part, excluding
bug-fix/contributor/changelog lists):

| Release | Published | Regenerated | Cap |
|---|---|---|---|
| v0.22.0 (minor) | 1705 | **538** | 600 |
| v0.23.0 (minor) | 1119 | **280** | 600 |

<details>
<summary>Example 1 — v0.23.0 regenerated</summary>

```markdown
---
title: "v0.23.0"
description: "Install and run agents from the terminal, add capabilities as skills, and connect a Microsoft account without a secret."
---

# GAIA v0.23.0 Release Notes

Agents are now installable from the terminal, and the confirmation gate that pauses an agent before a consequential action works everywhere, not just in the Agent UI.

## Breaking Changes

- **`GAIA_MICROSOFT_TENANT` is gone** — the Microsoft connector split into Personal and Work/School, each with its own tenant. Drop the variable and pick the matching connector. (PR [amd#2729](amd#2729))

## What's New

- **Install and run agents from the terminal** — `gaia hub list`, `gaia hub install <agent> --trust`, `gaia hub uninstall <agent>`. `--trust` is required for an unverified agent. (PRs [amd#2484](amd#2484), [amd#2530](amd#2530), [amd#2708](amd#2708))
- **Every agent asks before it acts** — the confirmation gate for sending mail, writing files, and running commands now fires from the terminal, the local API, and MCP tool calls, not only the Agent UI. Set `GAIA_AUTO_APPROVE_TOOLS=1` to opt out. (PRs [amd#2475](amd#2475), [amd#2544](amd#2544), [amd#2846](amd#2846), [amd#2854](amd#2854))
- **Safer by default** — the MCP bridge binds to localhost and enforces `--auth-token`; the local API refuses credentialed cross-origin requests from non-allow-listed sites; MCP servers launch without a shell; agents cannot write to `~/.gaia` or pass crafted SQL to the database agent. (PRs [amd#2246](amd#2246), [amd#2238](amd#2238), [amd#2344](amd#2344), [amd#2844](amd#2844), [amd#2847](amd#2847), [amd#2860](amd#2860))
- **Add capabilities as skills** — `gaia skill create|import|list|info` gives an agent a new capability from a folder and a manifest. Skills are signed with trust tiers, audited before publish, and opt-in. (PRs [amd#2669](amd#2669), [amd#2692](amd#2692), [amd#2702](amd#2702), [amd#2693](amd#2693))
- **Connect a Microsoft account without a secret** — Personal and Work/School are separate connectors with device-code sign-in. (PRs [amd#2718](amd#2718), [amd#2364](amd#2364))
- **Lemonade Server 11.5.0.**

## Bug Fixes

- **Triage paginates large inboxes and reports truncation** (PR [amd#2646](amd#2646)) — mail past a hidden limit is no longer dropped without saying so.
- **Thread messages come back sorted and numbered** (PR [amd#2570](amd#2570)) — "reply to 3" hits the message shown at position 3.
- **The inbox pre-scan reports uncertainty as uncertainty** (PR [amd#2587](amd#2587)).
- **An email conversation survives its turns** (PR [amd#2837](amd#2837)) — a follow-up keeps session context.
- **A bare reconnect keeps existing grants** (PR [amd#2733](amd#2733)).
- **Restore from Trash anytime** (PR [amd#2542](amd#2542)) — no time window on undo.
- **Sender priority no longer overrides content classification** (PR [amd#2774](amd#2774)).
- **The agent survives an OpenMP double-init** (PR [amd#2508](amd#2508)).
- **Large tool results truncate to valid JSON** (PR [amd#2645](amd#2645)).
- **A missing model surfaces as a real 404** (PR [amd#2245](amd#2245)).
- **GPU is detected on all platforms and `default_device` is honoured** (PR [amd#2244](amd#2244)).
- **A sidecar that is alive but not serving is detected** (PR [amd#2707](amd#2707)).
- **The model-slot lease is held across inference** (PR [amd#2394](amd#2394)) — a second agent can't evict the model mid-generation.
- **A browser that never launched is surfaced** (PR [amd#2507](amd#2507)).
- **Stop aborts in-flight streaming** (PR [amd#2166](amd#2166)).

## Known Issues

- **The email agent is beta and CLI-first** — treat its output as a draft to review.
- **A full inbox triage can time out on larger mailboxes.**
- **Email autonomy is experimental** and not wired up in the packaged sidecar.

## Contributors

- [@handle](https://github.com/handle) — <contribution> (PR [#NNN](https://github.com/amd/gaia/pull/NNN))
  <!-- generated from the commit log; v0.23.0's list is unchanged from the published notes -->


## Full Changelog

**N commits** since v0.22.0:

- `<sha>` — <subject>

Full Changelog: [v0.22.0...v0.23.0](amd/gaia@v0.22.0...v0.23.0)
```
</details>

<details>
<summary>Example 2 — v0.22.0 regenerated (the largest recent
release)</summary>

```markdown
---
title: "v0.22.0"
description: "The email agent tracks follow-ups and action items, drafts in your voice, and runs as its own process. Plus a cron scheduler and Word document support in RAG."
---

# GAIA v0.22.0 Release Notes

A large release built around the email agent, which now tracks what you're waiting on instead of forgetting it after triage.

## Breaking Changes

- **Triage returns a reply scaffold, not an empty draft** — `POST /v1/email/triage` and `/triage/batch` now return a `DraftScaffold` without `body`. Code reading `result.draft.body` gets a missing key instead of `""`; use `POST /v1/email/draft` for composed prose. (PR [amd#1984](amd#1984))
- **RoutingAgent and DocumentQAAgent moved to standalone packages** — install `gaia-agent-routing` and `gaia-agent-docqa`. The old imports fail; there is no deprecation shim. (PR [amd#1455](amd#1455))

## What's New

- **An inbox agent that keeps track** — `gaia email` scans Sent folders across every connected mailbox and flags threads still waiting on a reply past a window you set (default 3 days). Detection only; it never nudges anyone for you. (PRs [amd#1922](amd#1922), [amd#1917](amd#1917), [amd#1919](amd#1919), [amd#1918](amd#1918))
- **Drafts in your own voice** — the agent derives greeting, sign-off, length, and formality from your Sent history and composes against that. Only the derived characteristics are stored, never old mail content. (PR [amd#1925](amd#1925))
- **Attachments work end to end** — triage surfaces each attachment's name, type, and size, and drafting and sending accept real attachments as Gmail multipart MIME or Outlook Graph attachments. (PRs [amd#1921](amd#1921), [amd#1883](amd#1883))
- **Email runs as its own process in the Agent UI (beta)** — install it from the Agent Hub panel and the UI talks to it over HTTP, instead of loading the email stack into the UI process. (PRs [amd#1884](amd#1884), [amd#1910](amd#1910), [amd#2100](amd#2100), [amd#2101](amd#2101), [amd#2105](amd#2105))
- **Run prompts on a cron from the terminal** — `gaia schedule add --name digest --cron "0 9 * * *" --prompt "summarize my inbox" --sink stdout`, then `gaia schedule daemon`. Schedules live in a hand-editable `~/.gaia/schedules.toml`; sinks are `stdout`, `file:<path>`, `notification`, or `telegram`. (PR [amd#1371](amd#1371))
- **Agents learn from work they repeat** — after enough successes on the same shape of goal, an agent distills the tool sequence into a reusable procedure and recalls it next time. Runs inside the existing memory pass; nothing to install. (PR [amd#1794](amd#1794))
- **Pick your model once** — `gaia config set default_model <id>` persists across `gaia chat`, `gaia llm`, and `gaia prompt`. An explicit `--model` still wins for a one-off. (PR [amd#1863](amd#1863))
- **RAG reads Word documents** — `.docx` files index like PDF and PPTX, including table cells, nested tables, content controls, hyperlinks, and textboxes, so filled-in form values get indexed. (PR [amd#1866](amd#1866))
- **A new default embedder** — the previous default cannot be loaded by current llama.cpp builds, which broke indexing, code search, and memory embedding on an up-to-date Lemonade. The default is now EmbeddingGemma 300M at the same 768 dimensions. (PRs [amd#1952](amd#1952), [amd#1761](amd#1761), [amd#1748](amd#1748))
- **The Agent Hub shows what an agent is worth** — an agent's page now carries its eval scorecard with a score badge and a code-derived capability matrix. (PRs [amd#1985](amd#1985), [amd#2020](amd#2020), [amd#2066](amd#2066))
- **Lemonade Server 10.10.0** — adds an audio-generation endpoint, lets Windows reuse system ROCm, and inhibits suspend during inference. Two upstream breaking changes are Linux-specific. (PR [amd#1969](amd#1969))

## Bug Fixes

- **`gaia init` said a working Lemonade wasn't installed** (PR [amd#1940](amd#1940)) — modern Lemonade (10.7+) dropped the `lemonade-server` CLI that GAIA probed for.
- **Installing the email agent from the Hub failed on every platform** (PR [amd#2086](amd#2086)).
- **Bulk triage broke on any real inbox** (PR [amd#2088](amd#2088)) — 60 emails overflowed the 16K context window; the result envelope is now condensed.
- **RAG silently indexed nothing** (PR [amd#1979](amd#1979)) — a failed `sentence-transformers` import made every indexing call a no-op.
- **Email bodies were truncated at 4,000 characters with no override** (PR [amd#2036](amd#2036)) — MFA codes and precise replies lost content past the cutoff.
- **Long threads overflowed the model's context** (PR [amd#2076](amd#2076)).
- **A disabled device was treated as usable** (PR [amd#2081](amd#2081)) — a device reporting `available: false`, such as an unpowered NPU, was misread as ready.
- **A newly connected mailbox was skipped** (PR [amd#1808](amd#1808)) — mailboxes connected mid-session were not picked up.
- **JSON with a `}` inside a string was dropped** (PR [amd#1824](amd#1824)).
- **Outlook users were told to reconnect Google** (PR [amd#1757](amd#1757)) — `AGENT_NOT_GRANTED` named the wrong provider.
- **The Agent UI hard-crashed on a recoverable GPU crash** (PR [amd#1799](amd#1799)) — it now falls back to software rendering.
- **A user-edited memory could be silently downgraded and then wiped** (PR [amd#1958](amd#1958)).
- **The builder agent ignored an agent name you had already given** (PR [amd#1981](amd#1981)).
- **The landing and hub pages scrolled sideways on phones** (PR [amd#1959](amd#1959)).

## Known Issues

- **Inbox pre-scan needs a single mailbox for now** — with both Gmail and Outlook connected, an Agent UI pre-scan errors. Disconnect one in Settings → Connectors; triage itself still spans every mailbox. ([amd#2127](amd#2127))
- **Spam detection under-flags over the REST API** — `/v1/email/triage` uses a narrow sender check rather than the model's reading. The agent's own inbox scanning is unaffected. ([amd#2124](amd#2124))
- **The email agent is beta** — treat its output as a draft to review. It never sends without your confirmation.

## Contributors

- [@alexey-tyurin](https://github.com/alexey-tyurin) — skill auto-synthesis / procedural memory (PR [amd#1794](amd#1794))
- [@TravisHaa](https://github.com/TravisHaa) — the `gaia schedule` CLI and cron-based dispatch (PR [amd#1371](amd#1371))
- [@Rohithmatham12](https://github.com/Rohithmatham12) — refresh resolved email backends before multi-mailbox triage (PR [amd#1808](amd#1808))
- [@Osamaali313](https://github.com/Osamaali313) — fix `extract_json_from_text` dropping JSON containing `}` (PR [amd#1824](amd#1824))
- [@eeee2345](https://github.com/eeee2345) — offline model-endpoint guard-proxy integration guide (PR [amd#1809](amd#1809))
- [@somo9909](https://github.com/somo9909) — prerequisites section for the memory guide (PR [amd#1665](amd#1665))

## Full Changelog

**N commits** since v0.21.2:

- `<sha>` — <subject>

Full Changelog: [v0.21.2...v0.22.0](amd/gaia@v0.21.2...v0.22.0)
```
</details>

<details>
<summary>What changed in the templates</summary>

- The narrative overview paragraph and the `**Why upgrade:**` block are
gone — the latter restated `What's New` verbatim.
- `What's New` entries are bullets, not `###` prose blocks.
- Tone guidance is no longer restated in the skill; it points at
CLAUDE.md § How You Communicate.
- The skill's embedded example now shows the old prose block as **bad**
and the bullet form as **good**.
- Emoji removed from the CI prompt (it asked for 🚀 / 🎯 / 🐛 headings
against the skill's own no-emoji rule).
- Both generators now emit the same sections in the same order, so the
file's shape no longer depends on which one ran.
- The cap excludes `Bug Fixes` / `Known Issues` / `Contributors` / `Full
Changelog`. Those are reference lists sized by how many fixes shipped —
capping them would hide work. This was caught by regenerating v0.22.0,
which overflowed a whole-file cap purely on its 14 bug-fix bullets.

**Follow-up, not in this PR:** the cap lives in prompt text, so it is
advisory. Making it a hard check in `util/validate_release_notes.py`
would enforce it in CI.
</details>

## Test plan

- [ ] `python util/validate_release_notes.py <regenerated sample> --tag
v0.23.0` exits 0 — passes unmodified, no validator changes in this PR
- [ ] `awk '/^## (Bug Fixes|Known Issues|Contributors|Full
Changelog)/{exit} {print}' <file> | wc -w` is under 350 (patch) / 600
(minor-major)
- [ ] `.github/workflows/claude.yml` parses as valid YAML and its
release-notes prompt contains no emoji
- [ ] `.claude/skills/gaia-release/SKILL.md` is under 500 lines (498)
- [ ] Both generators list the same sections in the same order
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Documentation changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants